document.addEventListener('DOMContentLoaded', function() {
    // 获取表单元素
    const loginForm = document.querySelector('.login-form');
    const usernameInput = document.getElementById('username');
    const passwordInput = document.getElementById('password');
    const rememberCheckbox = document.getElementById('remember');
    const loginButton = document.getElementById('login-btn');

    // 从URL获取重定向参数
    const urlParams = new URLSearchParams(window.location.search);
    const redirectUrl = urlParams.get('redirect');

    // 检查本地存储中是否有保存的用户名
    if (localStorage.getItem('rememberedUsername')) {
        usernameInput.value = localStorage.getItem('rememberedUsername');
        rememberCheckbox.checked = true;
    }

    // 添加表单提交事件监听
    loginForm.addEventListener('submit', function(e) {
        e.preventDefault();
        login();
    });

    // 登录函数
    function login() {
        // 获取表单数据
        const username = usernameInput.value.trim();
        const password = passwordInput.value.trim();

        // 简单验证
        if (!username || !password) {
            showError('请输入用户名和密码');
            return;
        }

        // 显示加载状态
        loginButton.disabled = true;
        loginButton.innerHTML = '<span class="loading"></span>登录中...';

        // 发送登录请求
        fetch('/auth/login', {
            method: 'POST',
            headers: {
                'Content-Type': 'application/x-www-form-urlencoded'
            },
            body: `username=${encodeURIComponent(username)}&password=${encodeURIComponent(password)}${redirectUrl ? '&redirect=' + encodeURIComponent(redirectUrl) : ''}`
        })
        .then(response => {
            if (!response.ok) {
                throw new Error('网络响应异常');
            }
            // 检查是否是重定向
            if (response.redirected) {
                window.location.href = response.url;
                return Promise.reject('redirect');
            }
            return response.json();
        })
        .then(data => {
            // 恢复按钮状态
            loginButton.disabled = false;
            loginButton.innerHTML = '登录';

            if (data.code === 200) {
                // 登录成功
                // 记住用户名
                if (rememberCheckbox.checked) {
                    localStorage.setItem('rememberedUsername', username);
                } else {
                    localStorage.removeItem('rememberedUsername');
                }

                // 存储token
                localStorage.setItem('sso-token', data.data.token);

                // 跳转到首页或重定向地址
                if (redirectUrl) {
                    window.location.href = redirectUrl;
                } else {
                    window.location.href = '/';
                }
            } else {
                // 登录失败
                showError(data.msg || '登录失败，请检查用户名和密码');
            }
        })
        .catch(error => {
            // 如果是重定向，不处理错误
            if (error === 'redirect') {
                return;
            }

            // 恢复按钮状态
            loginButton.disabled = false;
            loginButton.innerHTML = '登录';

            // 显示错误信息
            showError('登录失败，请稍后重试');
            console.error('Login error:', error);
        });
    }

    // 显示错误信息
    function showError(message) {
        // 检查是否已有错误提示元素
        let errorElement = document.querySelector('.error-message');
        if (!errorElement) {
            errorElement = document.createElement('div');
            errorElement.className = 'error-message';
            passwordInput.parentNode.appendChild(errorElement);
        }

        // 设置错误信息并显示
        errorElement.textContent = message;
        errorElement.style.display = 'block';

        // 3秒后隐藏错误信息
        setTimeout(() => {
            errorElement.style.display = 'none';
        }, 3000);
    }

    // 添加键盘事件监听，按下Enter键提交表单
    document.addEventListener('keydown', function(e) {
        if (e.key === 'Enter') {
            login();
        }
    });
});